package cetc;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {



//--------------------------------------------------------------冒泡算法择算法main部分-------------
/*
       int arr[]= {63,4,24,1,3,15};
       maopao sorter= new maopao();
       sorter.sort(arr);
*/

//--------------------------------------------------------------直接选择算法main部分-------------
/*
    selectsort sorter=new selectsort();
      sorter.sort(arr);
      */

//--------------------------------------------------------------9数填入9空，要求横竖 斜相加均相等main部分-------------
/*
  Ninecal nin =new Ninecal();
  nin.nine();

 */


//--------------------------------------------------------------杨辉三角main部分-------------
/*
yanghuisanjiao sanjiao=new yanghuisanjiao();
        System.out.println("输入一个数字，用于构建杨辉三角大小：");
        Scanner sc= new Scanner(System.in);
        int numb= sc.nextInt();
sanjiao.showarray(sanjiao.yanghui(numb));

 */




    }

}











//    ========================================================以下class部分










// --------------------------------------------------------冒泡排序法算法部分----------------------------

class maopao{
/*    冒泡排序法
 int arr[]= {63,4,24,1,3,15};
 排序：>1>3>4>15>24>63
 */

    public  void sort(int[] array){
        for (int i=0;i<array.length;i++){
            for (int j=1;j<array.length;j++){
                if (array[j-1]>array[j]){  //array[j-1]>array[j] ，做数值调换，但需要引入一个temp存放临时数据
                    int temp=array[j];
                    array[j]=array[j-1];
                    array[j-1]=temp;
                }
            }
        }
        showArray(array);

    }
    public void showArray(int[] array){
        for (int i :array){
            System.out.print(">"+i);
        }
    }
}

//--------------------------------------------------------直接排序法算法部分-----------------------------
 class selectsort{
    public void sort(int[] array){
        for (int i=0;i<array.length;i++){
            int index=i;
            int temp=0;
            for (int j=i+1;j<array.length;j++){

                if (array[j-1]>array[j]){
                    index=j;
                }

            }
            temp= array[i];
            array[i]=array[index];
            array[index]=temp;

        }
        System.out.println(Arrays.toString(array));
    }

}


//--------------------------------------------------------9数填入9空，要求横竖 斜相加均相等-----------------------------
class Ninecal{  //暴力破解，定义 9个循环，每个循环代表一个空，解决重复问题以及 sum相等问题即可。
    public void nine(){
        int[][] nin=new int[3][3];
       boolean breakd=false;
     //   showArrays(nin);
        int count=0;
        for (int a=1;a<=9;a++){
            for (int b=1;b<=9;b++){
                if(a==b){
                    continue;
                }
                if (breakd==true){
                    break;
                }
                for (int c=1;c<=9;c++){
                    if(b==c || a==c){
                        continue;
                    }
                    if (breakd==true){
                        break;
                    }
                    for (int d=1;d<=9;d++){
                        if(a==d || b==d || c==d){
                            continue;
                        }
                        if (breakd==true){
                            break;
                        }
                        for (int e=1;e<=9;e++){
                            if(a==e || b==e || c==e ||d==e ){
                                continue;
                            }
                            if (breakd==true){
                                break;
                            }
                            for (int f=1;f<=9;f++){
                                if(a==f || b==f || c==f ||d==f ||e==f) {
                                    continue;
                                }
                                if (breakd==true){
                                    break;
                                }
                                for (int g=1;g<=9;g++){
                                    if(a==g || b==g || c==g ||d==g ||e==g ||f==g) {
                                        continue;
                                    }
                                    if (breakd==true){
                                        break;
                                    }
                                    for (int h=1;h<=9;h++){
                                          if(a==h || b==h || c==h ||d==h ||e==h ||f==h ||g==h) {
                                                continue;
                                            }
                                          if (breakd==true){
                                              break;
                                          }
                                        for (int i=1;i<=9;i++){
                                            if(a==i || b==i || c==i ||d==i ||e==i ||f==i ||g==i ||h==i) {
                                                continue;
                                            }
                                            if (a+b+c==d+e+f && a+b+c==g+h+i &&a+d+g==b+e+h &&(a+d+g==c+f+i)&&(a+e+i==c+e+g)){
                                            nin[0][0]=a;
                                            nin[0][1]=b;
                                            nin[0][2]=c;
                                            nin[1][0]=d;
                                            nin[1][1]=e;
                                            nin[1][2]=f;
                                            nin[2][0]=g;
                                            nin[2][1]=h;
                                            nin[2][2]=i;
                                            count++;
                                                System.out.println("解法"+count+"已经找到：");
                                            showArrays(nin);
                                         //   breakd=true;
                                         //   break;
                                            }

                                        }

                                    }

                                }

                            }

                        }

                    }

                }

            }

        }

        }


    public void showArrays(int[][] array){ // 2维数组打印


        for (int i=0;i<array.length;i++){
            for (int j=0;j<array[0].length;j++) {

                System.out.print(array[i][j]);
            }
            System.out.println("");
    }
    }
}

//--------------------------------------------------------杨辉三角形-start-----------------------------
class yanghuisanjiao{
    public static int[][] yanghui(int a){
        int[][] array= new int[a][a];// 构建一个a*a大小的二维数组用于存放；
        array[0][0]=1;
        for (int i=1;i<array.length;i++){

            for (int j=0;j<=i;j++){
                if (j-1<0) {
                    array[i][j]=array[i-1][j]; //算法判断，防止j-1 小于0
                }else {
                    array[i][j]=array[i-1][j]+array[i-1][j-1];
                }

            }
        }

    return array;
    }

    public void showarray(int[][] array){  //打印函数
        for (int i=0;i<array.length;i++){

            for(int j=0;j<=i;j++){
                System.out.print(array[i][j]+"    ");
            }
            System.out.println(" ");
        }
    }

}
//--------------------------------------------------------杨辉三角形-end----------------------------